package com.rcache.core.manager;

import com.rcache.core.cache.Rcache;
import com.sun.istack.internal.Nullable;

import java.util.Collection;

/**
 * @desc 缓存管理器
 * @author  gzy
 * @time    2022-05-24
 */
public interface ICacheManager {
    /**
     * @param name 缓存名称
     * @return 缓存
     * @desc 根据缓存名称获取缓存
     */
    @Nullable
    Rcache getCache(String name);

    /**
     * @desc 得到所有缓存的名字
     * @return 返回所有缓存的名字
     */
    Collection<Object> getCacheNames();

    /**
     * @desc 添加cache
     * @param rcache
     */
    void addCache(Rcache rcache);

    void addCache(Object key,Object value);

    /**
     * 修改缓存
     * @param key
     * @param value
     */
    void updateCache(Object key, Object value);

    void updateCache(Rcache rcache);

    void clear();

    void remove(Object key);

    void destroy();



}